package com.egao.common.module.student.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.egao.common.core.web.JsonResult;
import com.egao.common.core.web.PageParam;
import com.egao.common.module.student.entity.Student;
import com.egao.common.module.student.entity.StudentInten;
import com.egao.common.module.student.entity.vo.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 学生接口mapper
 * @author lym
 */
@Repository
public interface StudentMapper extends BaseMapper<Student> {

    /**
     * 查询分页学生列表
     * @param page 参数对象
     * @return List<StudentListVO>
     */
    List<StudentListVO> listPage(@Param("page") PageParam<StudentListVO> page);

    /**
     * 查询学生全部数据
     * @param page 参数对象
     * @return List<Student>
     */
    List<StudentExcelVO> listExcel(@Param("page") PageParam<StudentExcelVO> page);

    /**
     * 查询单个学生详情
     * @param id 学生ID
     * @return StudentFormVO
     */
    StudentFormVO getDetail(@Param("id") Integer id);
    /**
     * 根据专业代码、年份查询学生
     * @param majors 专业编号集合
     * @param yearId 年份编号
     */
    List<Student> getStudentListByMajors(@Param("majors") List<String> majors, @Param("yearId") Integer yearId, @Param("lastYearId") Integer lastYearId);

    List<StudentFormVO> getAllStudent();

    /**
     * 查询学生ID姓名学号
     * @param collegeCode
     * @return
     */
    List<StudentTitleVO> listStudentTitle(@Param("collegeCode") String collegeCode);

    /**
     * 根据就业能力和年份
     * @param map 年份、能力
     */
    List<Student> getStudentListByAbility(@Param("map") Map<String, Object> map);

    /**
     * 就业状态列表
     * @param page
     * @return
     */
    List<StudentSignStatusVO> listSignStatusPage(@Param("page") PageParam<StudentSignStatusVO> page);

    /**
     * 生源统计
     * @param yearId 毕业年份
     * @return
     */
    List<StudentStatistics> statisticsStudent(@Param("yearId") String yearId);

    /**
     * 查询学院学生个数
     * @param yearId 毕业年份
     * @param xl 学历 可能涵盖多个学历
     * @return
     */
    List<StudentSignStatisticsCollegeVO> collegeStudentCount(@Param("yearId") Integer yearId, @Param("xl") String xl, @Param("tks") String tks);

    /**
     * 查询专业学生个数
     * @param yearId 毕业年份
     * @param xl 学历
     * @return
     */
    List<StudentSignStatisticsCollegeVO> majorStudentCount(@Param("yearId") Integer yearId, @Param("xl") String xl);

    /**
     * 查询各民族学生个数
     * 排除汉族
     * @param yearId 毕业年份
     * @param xl 学历
     * @param tks 特困生
     * @return List<StudentSignStatisticsCollegeVO>
     */
    List<StudentSignStatisticsCollegeVO> mzStudentCount(@Param("yearId") Integer yearId, @Param("xl") String xl, @Param("tks") String tks);

    /**
     * 查询学院及学院人数
     * @param yearId 毕业年份
     * @return List<StudentCollegeVO>
     */
    List<StudentCollegeVO> studentCollegeList(@Param("yearId") Integer yearId);

    /**
     * 查询求职意向
     * @param page
     * @return
     */
    List<StudentExcelVO> exportJob(@Param("page") PageParam<StudentExcelVO> page);

    /**
     * 导出意向毕业去向
     * @param page
     * @return
     */
    List<StudentInten> exportGone(@Param("page") PageParam<StudentExcelVO> page);

}
